The invention relates generally to mechanism for transferring information between processes typically running on different host processors.
File transfers between computers are commonly done using communication protocol over a computer network. If the network is the Internet, one application protocol which is particularly popular referred to as ftp (file transfer protocol). Typically, the user or process that wants to send or retrieve a file from a remote computer invokes the file transfer protocol. In general, the user""s ftp command opens a control channel over the network to the remote or target machine. Then through the use of various commands, e.g. put and get commands, the user can send a file to or retrieve a file from the remote machine. According to the ftp protocol, the actual file transfer takes place over a separate data channel that is different from the control channel.
A general characteristic of ftp and other similar file or data transfer protocols is that the machines are linked together over a common computer network. The connection to that network can be temporary and established solely for the purpose of the transfer or it can be a connection which is more permanent and which exists for other computing and communication purposes.
In general, in one aspect, the invention is a method of communicating between first and second processes running on a plurality of host processors that are connected to a data storage system. The method includes the steps of establishing a connection between the first and second processes through the data storage system; and by using the connection established through the data storage system, transferring information between the first and second processes.
Preferred embodiments include the following features. The method further includes defining a shared storage region within the data storage system and performing the establishing and sending steps through the shared storage region. The method also includes defining areas within the shared storage region that are used to implement a set of control structures and a plurality of transfer buffers, and the step of establishing the connection between the first and second processes includes using the set of control structures to establish the connection and the step of transferring information between the first and second processes uses the plurality of transfer buffers. In a data storage system which includes a cache memory, a disk storage unit, and a controller which destages data from the cache memory into the disk storage unit, the method further involves using the cache memory for establishing the connection and sending information; and disabling the destaging function of the controller for the shared storage region. The step of transferring information through the transfer buffers includes the steps of using the first process to write data to the plurality of transfer buffers; using the second process to read data that was written to the transfer buffers; and using the control structures to synchronize the writing and reading operations.
In general, in another aspect, the invention is a method of transferring information in a system that includes a plurality of host processors that are connected to a common data storage system and that share a region of storage within the data storage system. The method includes the steps of defining areas within the shared storage region that are used to implement a set of control structures and a plurality of transfer buffers; using the control structures to establish a connection between a first process and a second process through the shared memory of the data storage system, wherein the first and second processes are running on the plurality of host processors; and after establishing the connection, transferring information between the first process and the second process through the transfer buffers. The step of transferring information through the transfer buffers includes the steps of: through the first process, writing data to the plurality of transfer buffers; through the second process, reading data that was written to the transfer buffers; and using the control structures to synchronize the writing and reading steps.
Preferred embodiments include the following features. The set of control structures includes a first data structure and a second data structure, and the step of establishing a connection uses the first data structure and the step of using the control structures to synchronize the writing and reading uses the second data structure. The step of establishing a connection involves adding identifiers of the first and second processes to the first data structure; and setting a first flag in the first data structure to indicate that a connection is being requested by the first process of the second process. The step of establishing a connection further involves, prior to the adding and setting steps, reading the first data structure from the shared memory into a first local memory of the host processor on which the first process is running; and after the adding and setting steps, writing the first data structure back to the shared memory. Also, the step of establishing a connection further involves, prior to reading the first data structure from the shared memory into the first local memory, locking a portion of shared memory in which the first data structure is stored; after writing the first data structure back to the shared memory, unlocking the portion of shared memory in which the first data structure is stored.
Also in preferred embodiments, the second data structure includes a first table that includes a plurality of records each of which identifies a corresponding transfer buffer in the plurality of transfer buffers and the step of using the control structures to synchronize the writing and reading steps involves selecting a record among the plurality of records; and performing a first sequence of steps including determining whether the transfer buffer which corresponds to the selected record is available to receive data; if the transfer buffer which corresponds to the selected record is available to receive data, causing the first process to perform the step of writing data to the plurality of transfers buffer by writing data to the transfer buffer which corresponds the to selected record; and setting a first flag in the selected record to indicate that data has been written to that transfer buffer which corresponds to the selected record. The method also includes selecting a next record among the plurality of records in the first table and for the next selected record performing the first sequence of steps. The method also includes repeating the steps of selecting a next record and performing the first sequence of steps until all data that is available for transfer has been written to the plurality of transfer buffers. The step of using the control structures to synchronize the writing and reading steps further includes the steps of through the second process, polling the first table to determine when the first flag has been set; upon detecting that the first flag has been set, causing the second process to perform the step of reading data that was written to the transfer buffers by reading the data that was written to the transfer buffer which corresponds to the selected record; and setting a second flag in the second data structure to indicate that the second process has read the data that was written to the transfer buffer which corresponds to the selected record.
In general, in yet another aspect, the invention is a data storage system for handling a file transfer between a first process and a second process, each of which is running on a selected one of a plurality of host processors that are connected to the data storage system. The data storage system includes a shared storage region to which both the first and second processes share access; a set of control structures implemented in the shared storage region; and a plurality of transfer buffers implemented in said shared memory. The set of control structures includes a first table which serves to establish a connection between the first and second processes through the shared memory, and a second table which serves to coordinate use of the plurality of transfer buffers.
In general, in still another aspect, the invention is a computer program residing on a computer-readable medium. The program is for running on a first host system which is connected to a data storage system to which a second host system is also connected. The data storage system includes a shared storage region that is shared by both the first and second host systems. The program includes instructions enabling a first process that is running on the first host system to perform the functions of: requesting a connection through the shared storage region in the data storage system to a second process running on the second host system; and using the connection through the shared storage region to transfer information between the first and second processes.
In general, in still yet another aspect, the invention is a computer program residing on a computer-readable medium, the program including instructions for causing the first host system to perform the functions of: detecting that a connection through the shared storage region in the data storage system is being requested by a process running on the second host system; writing an acknowledgment to the shared storage region accepting the connection; and using the connection through the shared storage region to transfer information between the first and second processes.
The File Transfer System (FTS) provides a high bandwidth file transfer capability using an integrated cache disk array (ICDA) that includes one or more disks that are shared between multiple systems as the transfer mechanism. Files can be transferred between systems with different hardware and OS types.
Other advantages and features will become apparent from the following description of the preferred embodiment and from the claims.